Almost all of today's personal computers are controlled by operating systems that have a window-based user interface. Most of these operating systems are capable of multitasking in which multiple programs execute simultaneously, and each program displays a window on a display screen for user interaction. The ability to resize application windows and change style and size of fonts are the significant advantages of a GUI versus a character-based interface. Window-based GUIs have become the standard way users interact with computers, and the major GUIs include Windows™ and Mac™ along with Motif for UNIX and the GNOME and KDE interfaces for Linux.
FIG. 1 is a block diagram illustrating a conventional computer system with a window-based user interface. As is well known, a typical personal computer (PC) system 10 includes a microprocessor and memory (not shown) for executing computer programs, various input devices, e.g., keyboard 12 and 5 mouse 14, and a display screen 16.
Depending on the number of computer programs running, the display screen 16 may display any number of open windows 18a and 18b (collectively referred to as windows 18), each awaiting user input. Example types of computer programs include spreadsheets, word processors, and Web browsers.
Depending on the arrangement and number of windows 18 displayed, it is common for the windows 18 to overlap so that some windows 18 partially or completely obscure other windows 18. To manage the display of windows 18, the operating system typically views the windows 18 as a stack and maintains an ordering of the windows 18 with respect to display depth.
The mouse 14, or other type of input device, may be used to move a mouse pointer 20 among the various windows 18. The user typically activates a particular window 18 by clicking the mouse pointer 20 anywhere on the window 18. When a window 18 is activated, Le., becomes the active window 18a, it is displayed in its entirety on top of all other windows 18b and is the only window that can receive user input. The user typically interacts with the active window 18a by selecting or entering data in the window 18, or by selecting menu functions associated with the window 18.
Although windows 18 can be moved to open areas of the screen and/or resized, the current window management schema makes it difficult for user to juggle more than a very few windows 18 at a time without obscuring other windows 18 that are being used. When one window 18a that the user wishes to interact with is obscured by another, the user must take extra steps to return the window 18b to the forefront. This can be terribly annoying at times, particularly as the number of windows 18 being juggled increases.
One attempted solution to this problem is disclosed in U.S. Pat. No. 5,046,001, which describes a method for accessing selected windows in a multitasking system. In this method, user inputs are monitored to determine the position of a cursor, and as the cursor passes over each window, the window is automatically promoted to the top display position and made active. The problem this method, however, is that the user can quickly lose control of which windows are promoted to the top of the display. Consider for example, the situation where there are many tiled windows displayed and the user needs to move the cursor to the side of the display screen 16 to select a program icon. Assuming that the cursor passes over each of the tiled windows on its way to the icon, each of the windows would pop to the top of the display in quick succession whether the user wanted them to or not. Rearranging the depth order of the windows in this fashion without user consent could be distracting and annoying to the user in certain situations.
Accordingly, what is needed is an improved system for ordering on-screen windows. The system should retain the original depth ordering of the windows, but also allow inactive windows to be used as though they were active. The present invention addresses such a need.